import javax.xml.namespace.QName;

class Student {
    /**
     * 成员属性/成员变量 ：定义在方法外部，类内部的变量。
     * 成员变量：
     * 1. 静态成员变量
     * 2.普通成员变量
     */
    public String name;
    public int age;

    public static String classRoom;
    // 静态成员 变量不属于对象 所以访问的时候和实例化对象是没有关系的 直接通过类名访问 Student.classRoom

    /**
     * 成员方法：
     * 1.静态成员方法
     * 2.普通成员方法
     */
    public void eat() {
        System.out.println(this.name + "吃饭！");
    }

    public void show() {
        System.out.println("姓名" + this.name + "年龄" + this.age);
        this.eat();
    }

    public static String getClassRoom() {
        return classRoom;
    }


    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("这是构造方法");
    }

    // 构造方法的重载
    public Student() {
//        this.name = "wudi";
//        this.age = 20;
        this("鼠标", 9);
        // 这个this语法只能出现在构造方法中
        // 调用当前类中其他的构造方法
        // 不能自己调用自己
        // 只能出现在构造方法的第一行
    }

    @Override
    public String toString() {
        // 类的打印 通过右键的generator

//        return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';
        return "wuhan";
    }


    // 静态代码块 一般用于初始化静态成员变量
    static {
        classRoom = "110Java";
        System.out.println("这是静态代码块");
    }

    {
        // 构造代码块 或者叫实例代码块
        System.out.println("这是构造代码块/实例代码块");
    }


}

public class test {

    public static void main(String[] args) {
        Student student1 = new Student("zhangsan", 5);  // 实例化对象
//        Student student2 = new Student("lisa", 6);
//        student1.show();
        System.out.println(student1);
    }

    public static void main2(String[] args) {
        Student student1 = new Student("zhangsan", 5);  // 实例化对象
        student1.name = "zhangsan";
        student1.age = 10;
        student1.show();

        Student student2 = new Student();  // 实例化对象
        student2.show();

    }

    public static void main1(String[] args) {
//        Student student1 = new Student();  // 实例化对象
//        student1.name = "zhangsan";
//        student1.age = 10;
//        student1.show();
//        Student student2 = new Student();  // 实例化对象
//        student2.name = "lisi";
//        student2.age = 20;
//        student2.show();
        // 谁调用show方法，this就是指谁
    }


}
